﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Transactions;
using AutoMapper;
using DTO;

namespace DAO
{
    public class NhanVienDAO
    {
        public static bool DangNhap(NhanVienDTO dto)
        {
            //khởi tạo datacontext
            QuanLyThuVienDataContext context = new QuanLyThuVienDataContext();

            //Lấy dữ liệu phù hợp với dto
            NhanVien nv = context.NhanViens.SingleOrDefault(c => c.TenTaiKhoan == dto.TenTaiKhoan && c.MatKhau == dto.MatKhau);  
              
            //không tồn tại nhân viên tức tên tài khoản & mật khẩu bị sai
            //trả về false
            if (nv == null)
                return false;

            //gán lại thông tin vào dto đưa lên
            dto.MaNhanVien = nv.MaNhanVien;
            dto.TenNhanVien = nv.TenNhanVien;
            dto.MaBoPhan = nv.MaBoPhan;

            //nhân viên có tồn tại và nhập đúng thông tin
            return true;
        }

        public static bool KiemTraTaiKhoan(string p)
        {
            //khởi tạo datacontext
            QuanLyThuVienDataContext context = new QuanLyThuVienDataContext();

            //Lấy dữ liệu phù hợp với string
            NhanVien nhanvien = context.NhanViens.SingleOrDefault(c => c.TenTaiKhoan == p);

            //tên tài khoản chưa tồn tại return false
            if (nhanvien == null)
                return false;

            //tên tài khoản đã tồn tại return true
            return true;
            //true : đã tồn tại
            //false : chưa tồn tại
        }

        public static bool Them(NhanVienDTO dto)
        {
            using (TransactionScope scope = new TransactionScope())
            {
                //khởi tạo datacontext
                QuanLyThuVienDataContext context = new QuanLyThuVienDataContext();

                //tạo đối tượng
                NhanVien n = new NhanVien();

                //mapping
                Mapper.CreateMap<NhanVienDTO, NhanVien>();
                n = Mapper.Map<NhanVienDTO, NhanVien>(dto);

                //thêm vào ds khi nhấn submit
                context.NhanViens.InsertOnSubmit(n);

                //thực hiện thay đổi
                context.SubmitChanges();

                //Đọc dòng vừa ghi để lưu lại mã lên trên
                //dto.MaNhanVien = n.MaNhanVien;

                //transaction thành công
                scope.Complete();
            }
            return true;
        }
    }
}
